package org.example.design.designmode.factory.simplefactory;

/**
 * @Auther: lingshi
 * @Date: 2020/5/9 22:13
 * @Description:
 */
public class CouresFactory {

//    public Coures getCoures(String name){
//        if("java".equals(name)){
//            return  new JavaCoures();
//        }else if("python".equals(name)){
//            return  new PythonCoures();
//        }else{
//            return null;
//        }
//    }
//
//    /**
//     * 传入类的全路径返回实例
//     * 缺点就是 com.des.design.designMode.factory.simpleFactory.JavaCoures 需要全路径不便于维护、如果打错地址是会报错的
//     */
//    public Coures getCoures(String clas) throws ClassNotFoundException, IllegalAccessException, InstantiationException {
//        if(null!=clas||!"".equals(clas)){
//            return  (Coures)Class.forName(clas).newInstance();
//        }else {
//            return null;
//        }
//      }

    /**
     * 通过反射来规定入参的类型避免了路径名称规避单词路径拼写错误
     * 事先定义好入参的类型，通过clas.newInstance()直接返回对应的实例
     * @param clas
     * @return
     * @throws IllegalAccessException
     * @throws InstantiationException
     */

    public Coures getCoures(Class<? extends Coures> clas) throws IllegalAccessException, InstantiationException {
        if(null!=clas||!"".equals(clas)){
            return clas.newInstance();
        }
        return null;
    }
}
